home *** CD-ROM | disk | FTP | other *** search
/ PD ROM 1 / PD ROM Volume I - Macintosh Software from BMUG (1988).iso / Programming / Programming Tools / Lightspeed Source Code / pbcall.asm < prev    next >
Encoding:
Text File  |  1986-07-12  |  2.3 KB  |  92 lines  |  [TEXT/KAHL]

  1. ;                   HFS EXAMPLE
  2. ;        Modified by John Pence, MacMan, Inc., Houston Texas.
  3. ;            from MacTutor, Jan,86 issue
  4. ;           Programming for HFS" by Miki Schuster.
  5. ;               
  6. ;         A "must have" for the serious programmer
  7. ;         MACTUTORâ„¢ P.O BOX 400
  8. ;         PLACENTIA, CA 92670
  9. ;         (714) 630-3730;    
  10.  
  11. ; FILE: PBCALL0.Asm
  12.          
  13. ;    External routines for Lightspeed for HFS support
  14. ;     Modified by John Pence, MacMan, Inc., Houston Texas.
  15. ;       from MacTutor, Jan,86 issue
  16. ;       "Programming for HFS" by Miki Schuster.
  17. ;
  18. ;       ENTER THE LABELS FOR THE FUNCTIONS IN THE
  19. ;       CORRESPONDING  .VOC FILE IF YOU WISH TO PRESERVE
  20. ;       LABEL'S CASE. THIS FILE MUST BE FIRST PROCESSED WITH
  21. ;       APPLES MDS ASSEMBLER (I tried Consulairs MAC C assenbler with
  22. ;       poor results, but it may also be ok).THEN PROCESS THE .RELFILE 
  23. ;       WITH RELCONV (LIGHTSPEED UTILITY). THEN INCLUDE THE RESULTANT
  24. ;      .Lib FILE IN YOUR PROJECT.
  25.  
  26. ; C interface macro definitions
  27. ;
  28. ;; pbcall(¶mblock,async,trap,trap identifier)
  29. ;;         longword   word  word word
  30. ;; (ARGS PUSHED RIGHT TO LEFT)
  31.  
  32. ;ON ENTRY
  33. ;STACK BOTTOM
  34. ;;     OFFSET    ITEM
  35. ;     FROM TOS
  36. ;       52-     TRAP IDENTIFIER WORD     -WORD 
  37. ;;      50     INSTRUCTION (HEX)     -WORD
  38. ;;     48     ASYNC FLAG         -WORD
  39. ;      44     ADDR. OF PARAMETER BLOCK -LONGWORD
  40. ;;     40     RETURN ADDRESS         -LONGWORD    
  41. ;;     36     D3  - (LIGHTSPEED DOCS   -LONGWORD
  42. ;;     32     D4  - SAY SAVE ALL BUT   -LONGWORD
  43. ;;     28     D5  - D0,D1,D2,A0,A1,A7) -LONGWORD
  44. ;;     24     D6                       -LONGWORD
  45. ;;     20     D7                       -LONGWORD
  46. ;;     16     A2             -LONGWORD
  47. ;;     12     A3             -LONGWORD
  48. ;;     8     A4             -LONGWORD
  49. ;;     4     A5             -LONGWORD
  50. ;;     0     A6 -TOP          -LONGWORD
  51. ;;
  52.  
  53. XDEF pbCall
  54.  
  55. ;include tooltraps.txt  ; for definition of _Debugger
  56.  
  57.  
  58.  
  59.  
  60.  
  61. pbCall:
  62.     ;_Debugger          ; for a while, I needed this!
  63.     MOVEM.L    D3-D7/A2-A6,-(SP) ; save the world
  64.     MOVE.W    48(SP),D1      ; GET ASYNC FLAG 
  65.     MOVE.W    50(SP),D2      ; GET INSTRUCTION
  66.     TST.B    D1            ; TEST ASYNC FLAG
  67.     BEQ.S    @1            ; SKIP IF ASYNC 
  68.     OR.W    #$400,D2      ; SET BITS IN INSTRUCTION FOR SYNC
  69. @1:    
  70.     LEA    @2,A0         ; GET ADDRESS OF INSTRUCTION
  71.     MOVE.W    D2,(A0)       ; JAM THE OVER THE NOP
  72.     MOVE.L    44(SP),A0          ; GET THE ADDR OF PARAMETER BLOCK
  73.     MOVE.W    52(SP),D0     ; GET THE TRAP CALL IDENTIFIER WORD
  74. @2:
  75.     NOP               ; put instruction here
  76.     
  77.     MOVEM.L    (SP)+,D3-D7/A2-A6; RESTORE REGS
  78.     RTS              ; GET BACK
  79.  
  80. END
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.